void Zapytania_Do_Orno() {
// INFO: 514 bez względu na to o ile rejestrów pytamy odpowie jednym
const byte zapytanie_514[][8] = {
{ 0x00, 0x03, 0x01, 0x31, 0x00, 0x01, 0xD5, 0xE8 }, // Pytanie o napiecie
{ 0x00, 0x03, 0x01, 0x39, 0x00, 0x02, 0x14, 0x2B }, // Pytanie o prad
{ 0x00, 0x03, 0x01, 0x40, 0x00, 0x02, 0xC5, 0xF2 }, // Pytanie o moc czynna
{ 0x00, 0x03, 0x01, 0x48, 0x00, 0x02, 0x44, 0x30 }, // Pytanie o moc bierna
{ 0x00, 0x03, 0x01, 0x58, 0x00, 0x01, 0x05, 0xF4 }, // Pytanie o PF
{ 0x00, 0x03, 0xA0, 0x00, 0x00, 0x0A, 0xE6, 0x1C }, // Pytanie o zuzyta energie czynna
{ 0x00, 0x03, 0xA0, 0x1E, 0x00, 0x0A, 0x86, 0x1A }, // Pytanie o zuzyta energie bierna
{ 0x00, 0x03, 0x01, 0x50, 0x00, 0x02, 0xC4, 0x37 }, // Pytanie o moc pozorna
{ 0x00, 0x03, 0x01, 0x30, 0x00, 0x01, 0x84, 0x28 }, // Pytanie o czestotliwosc
{ 0xFF }
};
// INFO: 504 można pytać o dowolną liczbę rejestrów
const byte zapytanie_504[][8] = {
{
0x00, 0x03, //00 03 ID, Function READ
0x00, 0x00, //00 00 adr rej H, L
0x00, 0x0a, //00 10 liczba rej do odczytu H, L
0x45, 0xd7 //45 d7 CRC L, H
},
{ 0xFF }
};
if ( millis() >= timeoutOdpytanie ) {
timeoutOdpytanie = millis() + CO_ILE_PYTAC_ORNO;
timOdpowiedziOrno = millis();
++nrPytaniaOrno;
if ( (zapytanie_514[nrPytaniaOrno][0] != 0xFF && typOrno == 514) ||
(zapytanie_504[nrPytaniaOrno][0] != 0xFF && typOrno == 504) ) {
uint8_t buf[8];
if ( typOrno == 514 ) {
memcpy( buf, (uint8_t*)zapytanie_514[nrPytaniaOrno], 6 );
}
else {
memcpy( buf, (uint8_t*)zapytanie_504[nrPytaniaOrno], 6 );
}
uint16_t crc = CRC16( buf, 6 );
buf[6] = crc;
buf[7] = crc >> 8;
wyslij_na_RS485( buf, 8 );
}
else {
nrPytaniaOrno = -1;
timeoutOdpytanie = millis() + PAZUZA_ZAPYTAN_ORNO;
wyslij_na_RS485( dane, 17 );
}
}
}
}